package com.zm.campus.config;


import com.zm.campus.interceptor.NoLoginInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/*配置拦截器配置类的相关配置
继承WebMvcConfigurer里面各常用方法介绍
解决跨域问题 public void addCorsMappings(CorsRegistry registry) ;
添加拦截器 void addInterceptors(InterceptorRegistry registry);
这里配置视图解析器 void configureViewResolvers(ViewResolverRegistry registry);
配置内容裁决的一些选项 void configureContentNegotiation(ContentNegotiationConfigurer configurer);
视图跳转控制器 void addViewControllers(ViewControllerRegistry registry);
静态资源处理 void addResourceHandlers(ResourceHandlerRegistry registry);
默认静态资源处理器 void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer);
*/
@Configuration//该注解代表这个类是配置类
public class MvcHandlerInterAdapConfig implements WebMvcConfigurer {
    @Bean//将方法的返回值交给ioc维护（实例化）
    public NoLoginInterceptor noLoginInterceptor(){
        return new  NoLoginInterceptor();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //需要一个实现了拦截器功能的实例对象，这样使用的是noLoginInterceptor
        registry.addInterceptor(noLoginInterceptor())
                .addPathPatterns("/**")//设置需要被拦截的资源，默认拦截(两颗**)所有的资源
                .excludePathPatterns("/doLogin","/images/**","/register","/loginOut",
                        "/getSchoolList","/getUserSalt","/getLoginAvatar","/getOnlineNum"); //登录接口下的都不用被拦截

    }



    /*如果前端直接写本地图片的地址会报错：
    Not allowed to load local resource。因为springboot是内置的tomcat，浏览器为了安全起见是不能直接访问本地资源的。
    所以不能通过浏览器直接访问本地资源，必须在前端页面中拼的是一个网络路径而不是文件的本地路径！
     */

//        //文件磁盘图片url 映射
//        //配置server虚拟路径，addResourceHandler是指你设置的虚拟路径，前端展示页面时填入这个路径来进行访问

}
